﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Recursos.Model;
using Microsoft.Reporting.WebForms;
using Recursos.dsPeriodoTableAdapters;
using System.Data;
using Recursos.dsPeriodoParticularTableAdapters;
using Recursos.dsCarreraTableAdapters;
using Recursos.dsCursoTableAdapters;
using Recursos.dsProfesorTableAdapters;
using Recursos.dsSedeTableAdapters;
using Recursos.dsSedeParticularTableAdapters;

namespace Recursos
{
    public partial class WebForm4 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var userSecurity = ((Usuario)Session["UserLogged"]);
            if (userSecurity == null)
                Response.Redirect("~/NoAccess.aspx");
            var permisos = new PermisosModel();
            if (!Page.IsPostBack && userSecurity != null && (permisos.obtenerRolUsuario(userSecurity.Cedula).Equals("Administrador") || permisos.obtenerRolUsuario(userSecurity.Cedula).Equals("Coordinador")))
                PopulateDropDownReportePeriodo();

            else if (userSecurity == null || permisos.obtenerRolUsuario(userSecurity.Cedula).Equals("Operador") || permisos.obtenerRolUsuario(userSecurity.Cedula).Equals("Profesor"))
            {
                Response.Redirect("~/NoAccess.aspx");
            }


        }

        
        #region ReportePeriodo

        private void PopulateDropDownReportePeriodo()
        {
            CargarModalidad();
         
            CargarProfesor();
            CargarSedes();
            CargarCarrera();
            CargarCarrera2();
            CargarCurso();
        }

        private void CargarModalidad()
        {
            var modalidad = new ModalidadModel();
            DropDownListModalidad.DataSource = modalidad.CargarModalidad();
            DropDownListModalidad2.DataSource = modalidad.CargarModalidad();
            DropDownList5Modalidad3.DataSource = modalidad.CargarModalidad();
            DropDownListModalidad4.DataSource = modalidad.CargarModalidad();
            DropDownListModalidad5.DataSource = modalidad.CargarModalidad();
            DropDownListModalidad.DataTextField = "Nombre";
            DropDownListModalidad2.DataTextField = "Nombre";
            DropDownList5Modalidad3.DataTextField = "Nombre";
            DropDownListModalidad4.DataTextField = "Nombre";
            DropDownListModalidad5.DataTextField = "Nombre";
            DropDownListModalidad.DataValueField = "id";
            DropDownListModalidad2.DataValueField = "id";
            DropDownList5Modalidad3.DataValueField = "id";
            DropDownListModalidad4.DataValueField = "id";
            DropDownListModalidad5.DataValueField = "id";
            DropDownListModalidad.DataBind();
            DropDownListModalidad2.DataBind();
            DropDownList5Modalidad3.DataBind();
            DropDownListModalidad4.DataBind();
            DropDownListModalidad5.DataBind();

           
        }

        private void CargarSedes()
        {
           
            var sede = new SedeModel();
            DropDownListSede4.DataSource = sede.CargarSedes();
            DropDownListSede4.DataTextField = "Nombre";
            DropDownListSede4.DataValueField = "id";
            DropDownListSede4.DataBind();
        }

        private void CargarCarrera2()
        {
            var carrera = new CarrerasModel();

            DropDownList1carrera.DataSource = carrera.CargarCarreras();
            DropDownList1carrera.DataTextField = "Nombre";
            DropDownList1carrera.DataValueField = "id";
            DropDownList1carrera.DataBind();
        }
        private void CargarProfesor()
        {
            var usuario = new UsuarioModel();
            DropDownListProfesor5.DataSource = usuario.CargarProfesor();
            DropDownListProfesor5.DataTextField = "Nombre";
            DropDownListProfesor5.DataValueField = "id";
            DropDownListProfesor5.DataBind();
        }
        protected void cargarcursos_SelectedIndexChanged(object sender, EventArgs e)
        {
            var curso = new CursoModel();
            DropDownListCurso3.DataSource = curso.CargarCursoCarrera(int.Parse(DropDownList1carrera.SelectedValue));
            DropDownListCurso3.DataTextField = "Nombre";
            DropDownListCurso3.DataValueField = "id";
            DropDownListCurso3.DataBind();

        }
        private void CargarCurso()
        {
            var curso = new CursoModel();
            DropDownListCurso3.DataSource = curso.CargarCursoCarrera(int.Parse(DropDownList1carrera.SelectedValue));
            DropDownListCurso3.DataTextField = "Nombre";
            DropDownListCurso3.DataValueField = "id";
            DropDownListCurso3.DataBind();

        }
        private void CargarCarrera()
        {
            var carreras = new CarrerasModel();
            DropDownListCarrera2.DataSource = carreras.CargarCarreras();
            DropDownListCarrera2.DataTextField = "Nombre";
            DropDownListCarrera2.DataValueField = "id";
            DropDownListCarrera2.DataBind();

        }

        protected void GenerarReportePeriodo(object sender, EventArgs e)
        {
            
            if (DropDownListtipo.SelectedIndex == 1)
            {
                try
                {
                    ReportViewer1.LocalReport.ReportPath = "ReportePeriodo.rdlc";
                    var periodomodel = new PeriodoModel();
                    var resultadoperiodo = periodomodel.RetornarPeriodo(int.Parse(tab1año.Text), int.Parse(DropDownListPeriodo.SelectedValue), int.Parse(DropDownListModalidad.SelectedValue));
                    ReportePeriodoTableAdapter ta = new ReportePeriodoTableAdapter();
                    dsPeriodo.ReportePeriodoDataTable tabla = new dsPeriodo.ReportePeriodoDataTable();
                    ta.Fill(tabla, resultadoperiodo);
                    ReportViewer1.LocalReport.DataSources.Clear();
                    ReportDataSource datasource = new ReportDataSource("DataSetPeriodo", (DataTable)tabla);
                    ReportViewer1.LocalReport.DataSources.Add(datasource);
                    ReportViewer1.Visible = true;
                    ReportViewer1.LocalReport.Refresh();
                }
                catch (Exception)
                {
                    WebMsgBox.Show("No se genero el reporte debido a falta de información o periodo inválido", "Reportes");
                }
            }
            else
               try
            {
                ReportViewer1.LocalReport.ReportPath = "ReportePeriodoParticular.rdlc";
                var periodomodel = new PeriodoModel();
                var resultadoperiodo = periodomodel.RetornarPeriodo(int.Parse(tab1año.Text), int.Parse(DropDownListPeriodo.SelectedValue), int.Parse(DropDownListModalidad.SelectedValue));

                ReportePeriodoParticularTableAdapter ta = new ReportePeriodoParticularTableAdapter();
                dsPeriodoParticular.ReportePeriodoParticularDataTable tabla = new dsPeriodoParticular.ReportePeriodoParticularDataTable();
                ta.Fill(tabla, resultadoperiodo);
                ReportViewer1.LocalReport.DataSources.Clear();
                ReportDataSource datasource = new ReportDataSource("DataSetPeriodoParticular", (DataTable)tabla);
                ReportViewer1.LocalReport.DataSources.Add(datasource);
                ReportViewer1.Visible = true;
                ReportViewer1.LocalReport.Refresh();
            }
            catch (Exception)
            {
                WebMsgBox.Show("No se genero el reporte debido a falta de información o periodo inválido", "Reportes");
            }
        }


        protected void GenerarReporteCarrera(object sender, EventArgs e)
        {
            

                try
                {
                    ReportViewer1.LocalReport.ReportPath = "ReporteCarrera.rdlc";
                    var periodomodel = new PeriodoModel();
                    var resultadoperiodo = periodomodel.RetornarPeriodo(int.Parse(tab2año.Text), int.Parse(DropDownListPeriodo2.SelectedValue), int.Parse(DropDownListModalidad2.SelectedValue));

                    ReporteCarreraTableAdapter ta = new ReporteCarreraTableAdapter();
                    dsCarrera.ReporteCarreraDataTable tabla = new dsCarrera.ReporteCarreraDataTable();
                    ta.Fill(tabla, resultadoperiodo,int.Parse(DropDownListCarrera2.SelectedValue));
                    ReportViewer1.LocalReport.DataSources.Clear();
                    ReportDataSource datasource = new ReportDataSource("DataSetCarrera", (DataTable)tabla);
                    ReportViewer1.LocalReport.DataSources.Add(datasource);
                    ReportViewer1.Visible = true;
                    ReportViewer1.LocalReport.Refresh();
                }
                catch (Exception)
                {
                    WebMsgBox.Show("No se genero el reporte debido a falta de información o periodo inválido", "Reportes");
                }
            

        }

        protected void GenerarReporteCurso(object sender, EventArgs e)
        {


            try
            {
                ReportViewer1.LocalReport.ReportPath = "ReporteCurso.rdlc";
                var periodomodel = new PeriodoModel();
                var resultadoperiodo = periodomodel.RetornarPeriodo(int.Parse(tab3año.Text), int.Parse(DropDownListPeriodo3.SelectedValue), int.Parse(DropDownList5Modalidad3.SelectedValue));
                ReporteCursoTableAdapter ta = new ReporteCursoTableAdapter();
                dsCurso.ReporteCursoDataTable tabla = new dsCurso.ReporteCursoDataTable();
                ta.Fill(tabla, resultadoperiodo, int.Parse(DropDownListCurso3.SelectedValue));
                ReportViewer1.LocalReport.DataSources.Clear();
                ReportDataSource datasource = new ReportDataSource("DataSetCurso", (DataTable)tabla);
                ReportViewer1.LocalReport.DataSources.Add(datasource);
                ReportViewer1.Visible = true;
                ReportViewer1.LocalReport.Refresh();
            }
            catch (Exception)
            {
                WebMsgBox.Show("No se genero el reporte debido a falta de información o periodo inválido", "Reportes");
            }


        }



        protected void GenerarReporteProfesor(object sender, EventArgs e)
        {


            try
            {
                ReportViewer1.LocalReport.ReportPath = "ReporteProfesor.rdlc";
                var periodomodel = new PeriodoModel();
                var resultadoperiodo = periodomodel.RetornarPeriodo(int.Parse(tab5año.Text), int.Parse(DropDownListPeriodo5.SelectedValue), int.Parse(DropDownListModalidad5.SelectedValue));

                ReporteProfesorTableAdapter ta = new ReporteProfesorTableAdapter();
                dsProfesor.ReporteProfesorDataTable tabla = new dsProfesor.ReporteProfesorDataTable();
                ta.Fill(tabla, resultadoperiodo, int.Parse(DropDownListProfesor5.SelectedValue));
                ReportViewer1.LocalReport.DataSources.Clear();
                ReportDataSource datasource = new ReportDataSource("DataSetProfesor", (DataTable)tabla);
                ReportViewer1.LocalReport.DataSources.Add(datasource);
                ReportViewer1.Visible = true;
                ReportViewer1.LocalReport.Refresh();
            }
            catch (Exception)
            {
                WebMsgBox.Show("No se genero el reporte debido a falta de información o periodo inválido", "Reportes");
            }


        }


        protected void GenerarReporteSede(object sender, EventArgs e)
        {

            if (DropDownListTipo2.SelectedIndex == 1)
            {
                try
                {
                    ReportViewer1.LocalReport.ReportPath = "ReporteSede.rdlc";
                    var periodomodel = new PeriodoModel();
                    var resultadoperiodo = periodomodel.RetornarPeriodo(int.Parse(tab4año.Text), int.Parse(DropDownListPeriodo4.SelectedValue), int.Parse(DropDownListModalidad4.SelectedValue));

                    ReporteSedeTableAdapter ta = new ReporteSedeTableAdapter();
                    dsSede.ReporteSedeDataTable tabla = new dsSede.ReporteSedeDataTable();
                    ta.Fill(tabla, resultadoperiodo, int.Parse(DropDownListSede4.SelectedValue));
                    ReportViewer1.LocalReport.DataSources.Clear();
                    ReportDataSource datasource = new ReportDataSource("DataSetSede", (DataTable)tabla);
                    ReportViewer1.LocalReport.DataSources.Add(datasource);
                    ReportViewer1.Visible = true;
                    ReportViewer1.LocalReport.Refresh();
                }
                catch (Exception)
                {
                    WebMsgBox.Show("No se genero el reporte debido a falta de información o periodo inválido", "Reportes");
                }
            }
            else
            {
                try
                {
                    ReportViewer1.LocalReport.ReportPath = "ReporteSedeParticular.rdlc";
                    var periodomodel = new PeriodoModel();
                    var resultadoperiodo = periodomodel.RetornarPeriodo(int.Parse(tab4año.Text), int.Parse(DropDownListPeriodo4.SelectedValue), int.Parse(DropDownListModalidad4.SelectedValue));

                    ReporteSedeParticularTableAdapter ta = new ReporteSedeParticularTableAdapter();
                    dsSedeParticular.ReporteSedeParticularDataTable tabla = new dsSedeParticular.ReporteSedeParticularDataTable();
                    ta.Fill(tabla, resultadoperiodo, int.Parse(DropDownListSede4.SelectedValue));
                    ReportViewer1.LocalReport.DataSources.Clear();
                    ReportDataSource datasource = new ReportDataSource("DataSetSedeParticular", (DataTable)tabla);
                    ReportViewer1.LocalReport.DataSources.Add(datasource);
                    ReportViewer1.Visible = true;
                    ReportViewer1.LocalReport.Refresh();
                }
                catch (Exception)
                {
                    WebMsgBox.Show("No se genero el reporte debido a falta de información o periodo inválido", "Reportes");
                }
            
            }


        }
        #endregion
    }
}